using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Threading;
using SampleImageGenerator.Rendering;
using SampleImageGenerator.Modules.Primitives;
using LibNoise;

namespace SampleImageGenerator.Core
{
	internal class ImageDefinition
	{
		public IModule Module { get; private set; }
		public IPalette Palette { get; private set; }
		public IRenderer Renderer { get; private set; }
		public RectangleF SourceRegion { get; private set; }
		public Size ImageSize { get; private set; }
		public String Id { get; private set; }
		
		public ImageDefinition() 
			: this(new Constant(), new LinearPalette(), new FlatRenderer(), new RectangleF(-1, 1, 1, -1), new Size(400, 400), String.Empty)
		{
		}
		
		public ImageDefinition(IModule module, IPalette palette, IRenderer renderer, RectangleF sourceRegion, Size imageSize, String id)
		{
			Module = module; 
			Palette = palette; 
			Renderer = renderer;
			SourceRegion = sourceRegion;
			ImageSize = imageSize;
			Id = id;
		}
	}
}
